package cn.tedu.knows.resource.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.UUID;

@RestController
@Slf4j
@RequestMapping("/upload")
@CrossOrigin
public class ImageController {
    //我们之前配置了resource项目访问任何资源添加了一个前缀
    //例如访问资源路径下的1.jpg文件:localhost:9000/image/1.jpg
    //若要访问当前/upload路径,实际路径为:localhost:9000/image/upload
    //获得application.properties文件中声明的数据
    @Value("${knows.resource.path}")
    private File resourcePath;

    @Value("${knows.resource.host}")
    private String resourceHost;

    //路径不需要再写了
    @PostMapping
    public String uploadFile(MultipartFile imageFile) throws IOException {
        // 按日期创建文件夹
        String path = DateTimeFormatter.ofPattern("yyyy/MM/dd")
                .format(LocalDate.now());
        // path: 2021/08/02
        File folder=new File(resourcePath,path);
        // folder: F:/upload/2021/08/02
        //创建这个路径
        folder.mkdirs();//是mkdirssssssssssss!!!!
        //处理文件名
        // UUID生成文件名+原文件名后缀
        String fileName=imageFile.getOriginalFilename();
        // fileName:  d.jpg
        //            01234
        String ext=fileName.substring(
                fileName.lastIndexOf("."));
        //  ext:".jpg"
        //声成UUID字符串,并确定文件名
        String name= UUID.randomUUID().toString()+ext;
        //  name: jkahsdjkfhkjasdf.jpg
        //创建上传文件的最终位置:F:/upload/2021/08/02+jkahsdjkfhkjasdf.jpg
        File file=new File(folder,name);
        //执行上传
        imageFile.transferTo(file);

        //拼接上传成功文件的访问路径并返回
        //http://localhost:8899/2021/08/02/xxx.jpg
        String url=resourceHost+"/"+path+"/"+name;
        log.debug("访问的路径:{}",url);
        //返回url   返回 url    返回 url
        return url;
    }
}
